/*
 * Created on 24/06/2005
 *
 */
package com.master.bd.calculo_frete;

import java.sql.*;

import com.master.ed.*;
import com.master.root.*;
import com.master.util.*;
import com.master.util.bd.*;

/**
 * @author Tiago
 *
 */
public class Calcula_Frete_Ecomerce extends Calcula_Frete{


    public Calcula_Frete_Ecomerce(ExecutaSQL executasql) {
        super(executasql);
        // // ("Calcula_Frete_Ecomerce 1");
    }


    public void calcula(Calcula_FreteED ed)
    throws Excecoes{


            Localiza_Tabela = new Localiza_Tabela(this.executasql);
            Tabela_FreteBean tabelaFreteED = new Tabela_FreteBean();

            ed.setLocalizado("N");
            ed.setDM_Tem_Cidade("S");
            ed.setDM_Tem_Peso("N");
            ed.setDM_Tem_Modal("N");
            ed.setDM_Tem_Validade("N");
            ed.setDM_Tem_Vigencia("N");
            ed.setDM_Tem_Empresa("N");
            ed.setDM_Tem_Regiao_Estado("N");
            ed.setDM_Tem_Estado("S");
            ed.setDM_Tem_Subregiao("S");
            ed.setDM_Tem_Regiao_Pais("N");
            ed.setDM_Tem_Pais("S");
            ed.setDM_Tabela_Reversa("N");
            ed.setDM_Tem_Tabela_Unidade("S");
            ed.setDM_Tem_Produto("S");

            ed.setDM_Percurso_Busca("Origem_Destino");


                // // ("Localiza_Tabela 1");

                tabelaFreteED = Localiza_Tabela.escolheTabela(ed);


                if ("S".equals(tabelaFreteED.getDM_Localizado())) {
                  // // ("achou tabela- oid >> " + tabelaFreteED.getOID());

                    this.calculaFretePeso(tabelaFreteED, ed);
                    this.calculaFreteValor(tabelaFreteED, ed);

                    // // ("calculou tudo ");

                }
    }

    protected void calculaFretePeso( Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed) throws Excecoes {
            // --------------------FRETE PESO--------------------------------------------------

            // // ("achou tabela- getNR_Peso >> " + ed.getNR_Peso_Tabela());

            Tipo_Movimento = "FP";
            VL_Movimento_Frete=0;

            VL_Movimento_Frete = tabelaFreteED.getVL_E_Ate1();
            if (ed.getNR_Peso_Tabela() >=1 && ed.getNR_Peso_Tabela()<7 ){
              VL_Movimento_Frete = tabelaFreteED.getVL_E_1Kg();
            } if (ed.getNR_Peso_Tabela() >=7 ){
              double NR_Peso_Tabela_Calc=Valor.round(ed.getNR_Peso_Tabela(), 0);
              if ((ed.getNR_Peso_Tabela()*10)>(NR_Peso_Tabela_Calc*10)) NR_Peso_Tabela_Calc+=1;
              VL_Movimento_Frete = tabelaFreteED.getVL_E_1Kg() + (tabelaFreteED.getVL_E_Excedente() * (Valor.round(NR_Peso_Tabela_Calc, 0)-6));

            }
            ed.setCD_Tipo_Movimento(Tipo_Movimento);
            ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
            ed.setVL_Movimento(VL_Movimento_Frete);
            this.incluiMovimento(ed);
    }

    protected void calculaFreteValor(Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed)  throws Excecoes{
        // --------------------AD VALOREM--------------------------------------------------
            Tipo_Movimento = "AV";
            VL_Movimento_Frete = (ed.getVL_Nota_Fiscal() * tabelaFreteED.getPE_E_Ad_Valorem() / 100);


            ed.setCD_Tipo_Movimento(Tipo_Movimento);
            ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
            ed.setVL_Movimento(VL_Movimento_Frete);
            this.incluiMovimento(ed);

    }

}
